﻿//*** Guidance generated code ***//
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Web.Mvc;

namespace ProjectBase.Core.Diagnostics
{
    [ContractClassFor(typeof(IFilterBinder<,>))]
    internal abstract class FilterBinder<TFilter, TID> : IFilterBinder<TFilter, TID>
        where TFilter : class, IFilter<TID>
    {
        public bool BindFilter(TFilter filter
            , IValueProvider valueProvider
            , string prefix = null)
        {
            Contract.Requires(filter.Is(), "FilterBinder<TFilter, TID>, ReadFacade<T, TID, TFilter>, method BindFilter(), parameter 'filter' cannot be null");
            Contract.Requires(valueProvider.Is(), "FilterBinder<TFilter, TID>, ReadFacade<T, TID, TFilter>, method BindFilter(), parameter 'valueProvider' cannot be null");
            throw new NotImplementedException();
        }

        public bool BindFilter(TFilter filter
            , IValueProvider valueProvider
            , string prefix
            , IEnumerable<string> includeProperties
            , IEnumerable<string> excludeProperties = null)
        {
            Contract.Requires(filter.Is(), "FilterBinder<TFilter, TID>, ReadFacade<T, TID, TFilter>, method BindFilter(), parameter 'filter' cannot be null");
            Contract.Requires(valueProvider.Is(), "FilterBinder<TFilter, TID>, ReadFacade<T, TID, TFilter>, method BindFilter(), parameter 'valueProvider' cannot be null");
            throw new NotImplementedException();
        }

        #region base notimplemented
        public IObjectBinder Binder
        {
            set { throw new NotImplementedException(); }
        }

        #region IMessagesHolder Members

        public Messages Messages
        {
            get { throw new NotImplementedException(); }
            set { throw new NotImplementedException(); }
        }

        #endregion

        #endregion base notimplemented
    }
}